// 用户登录方法

const res = require('express/lib/response')
const user = require('../sql/index')
const svgCaptcha = require('svg-captcha')
const bcrypt = require('bcryptjs')
const jwt = require('jsonwebtoken')
const config = require('../config')
// svg 验证码图片相关配置
svgCaptcha.create({
  size: 4, // 个数
  width: 100, // 宽
  height: 30, // 高
  fontSize: 38, // 字体大小
  color: true, // 字体颜色是否多变
  noise: 1, // 干扰线几条
  background: "blue", // 背景色
})
// 生成 svg 格式图片验证码
let captcha = svgCaptcha.create()
// 用户登录 账号密码查验
exports.userLogin = (req,res) => {
  const userinfo = req.body
  const sql = 'select * from user where userAccount=?'
  user.query(sql,userinfo.userAccount,(err,results)=>{
    if(err) return res.cc(err)

    if(results.length !== 1) return res.cc("登陆失败！")

    // 调用 bcrypt 的 compareSync 方法将传入密码与 加密过的密码作比较
    const compareResult = bcrypt.compareSync(userinfo.password,results[0].password)
    if(!compareResult) return res.cc('登陆失败!')

    const user = {...results[0],password:'',user_pic:''}

    // 生成 token 字符串返回前端
    const tokenStr = jwt.sign(user,config.jwtSecretKey,{expiresIn:config.expiresIn})
    res.send({
        status:0,
        message:'登陆成功',
        token:'Bearer '+tokenStr,
        username:results[0].userName
    })
  })
}
// 用户登录自动查询头像
exports.queryUserPic = (req,res) =>{
  const userinfo = req.body;
  const sql = 'select userPic from user where userAccount=?'
  user.query(sql,userinfo.userAccount,(err,results)=>{
      if(err) return res.cc(err)
      if(results.length !== 1) return res.cc("该用户名不存在！")
      res.send({
          status:0,
          message:'搜索用户头像成功',
          data:results[0].userPic,
      })
  })
}
// 用户登录验证码接口
exports.loginCodeCheck = (req,res) =>{
  res.send(captcha.data)
}
// 重置/刷新验证码接口
exports.refreshCode= (req,res)=>{
  captcha = svgCaptcha.create()
  console.log(captcha.text);
  res.send(captcha.data)
}
// 验证码数据对比接口
exports.checkCodeLogin = (req,res) =>{
  const userinfo = req.body

  if(userinfo.code.toLowerCase() === captcha.text.toLowerCase()){
    return res.send({
      status : 0 ,
      massage : "人机验证通过"
    })
  }
  else{
    return res.send({
      status : 1,
      massage : "人机验证未通过"
    })
  }
}